/**
 * 876. 链表的中间结点
 *
 * 【简单】
 *
 * 给你单链表的头结点 head ，请你找出并返回链表的中间结点。
 * 如果有两个中间结点，则返回第二个中间结点。
 *
 * 示例 1：
 * 【https://assets.leetcode.com/uploads/2021/07/23/lc-midlist1.jpg】
 * 输入：head = [1,2,3,4,5]
 * 输出：[3,4,5]
 * 解释：链表只有一个中间结点，值为 3 。
 *
 * 示例 2：
 * 【https://assets.leetcode.com/uploads/2021/07/23/lc-midlist2.jpg】
 * 输入：head = [1,2,3,4,5,6]
 * 输出：[4,5,6]
 * 解释：该链表有两个中间结点，值分别为 3 和 4 ，返回第二个结点。
 */

import { ListNode } from '../utils/list'

function middleNode(head: ListNode | null): ListNode | null {
	let slow = head
	let fast = head

	while (fast && fast.next) {
		fast = fast.next.next
		slow = slow?.next!
	}

	return slow
}
